package cn.calin.day05.demo37List;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.SplittableRandom;

/*
    java.util.list接口 extends collection接口
    list接口的特点：
        1.有序的集合，存储元素和取出元素顺序是一致的（存储123 取出123）
        2.有索引，包含一些带索引的方法
        3，允许存储重复的数据
 */
public class Demo01List {
    public static void main(String[] args) {
        //创建一个list集合对象，多态
        List<String> list=new ArrayList<>();
        //使用add方法往集合中添加元素
        list.add("a");list.add("b");list.add("c");list.add("d");list.add("a");
        //打印集合
        System.out.println(list);

        //在c和d之间添加一个itheima
        list.add(3,"itheima");
        System.out.println(list);//[a, b, c, itheima, d, a]

        //移除元素
        String removeE=list.remove(2);
        System.out.println("被移除的是："+removeE);//被移除的是：c
        System.out.println(list);//[a, b, itheima, d, a]

        //把最后一个a，替换成A
        String setE = list.set(4, "A");
        System.out.println("被替换的是："+setE);//被替换的是：a
        System.out.println(list);//[a, b, itheima, d, A]

        //List遍历的三种方式
        //使用普通的for循环
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);

        }
        System.out.println("=========================");
        //迭代器遍历
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
        System.out.println("=========================");
        //增强for
        for (String s : list) {
            System.out.println(s);
        }

        String r=list.get(5);
        System.out.println(r);//.IndexOutOfBoundsException索引越界异常

    }
}
